1. Field of the Invention
This invention relates to change management for software systems and applications, and more particularly, a system and method which supports evolution and configuration of objects in a generic, domain-nonspecific, medium-independent fashion.
2. Description of Related Art
Many software and design applications need support for the evolution of objects as well as for constructing and configuring the objects into layered, hierarchical descriptions. Change management may be defined as a consistent set of techniques that aid in evolving the design and implementation of an abstraction. These techniques can be applied at many levels to record history, explore alternatives, and manage layered designs.
The idea of employing abstract machines as a technique for defining systems and designing software is fairly well known in software engineering. Normally, abstract machines are used to specify the design of such systems as hypertext systems or modeling systems. It would, however, be very useful to not only specify and design a system, but also to implement a system, using abstract machines.
In today's software systems, change management is treated as a function which interacts closely with the application. Change management information and domain knowledge are mixed together so that the change management component, if any, is not identifiable as a separate entity. Change management components which are identifiable often interact closely with file systems and only support files as manageable objects. Although several change management systems exist, they only address the needs of the one particular domain to which they are targeted (e.g., Computer Aided Electronic Design, Computer Aided Software Engineering, Authoring Systems etc.)
Current systems implement change management in a domain and application specific manner. This means that the systems are not re-usable and every new application needs to re-implement the same set of techniques in an ad hoc manner. For example, the Berkeley Version Server manages change for Computer Aided Design and Sun Microsystems NSE manages change for software development. Though these systems both run on Sun Microsystems workstations under the Unix operating systems, there cannot be any code sharing because both systems embed knowledge of their domains into the change management software.
Current systems, being tightly bound to the single application environment in which they are embedded, are not robust enough to withstand changes to the environment without major redesign or re-implementation. An example of such change might be a management decision to change the way in which audit trails are kept. The main drawback of such tightly coupled or embedded support systems is that the application semantics now has mixed abstractions. Mixed abstractions lead to software that is difficult to design, implement, validate, and maintain.
Additionally, current systems only support change management of persistent data. Transient data also undergoes change. Therefore, change needs to be managed for both transient and persistent data in a uniform manner.
Presently, systems take the approach that the unit of information which undergoes change is a file. A file is just an artifact of the storage system and often has nothing to do with the objects that an application is concerned with. An object is usually composed of a number of logical units such as design blocks, function definitions, or lines of text. A change management system needs to support all logical units which are meaningful to the application.